Data Center (DC) architecture generally consists of a large number of computational resources, storage resources and the like that are interconnected through a scalable Layer-2 or Layer-3 infrastructure. In addition to this networking infrastructure running on hardware devices the DC network includes software networking components (v-switches) running on general purpose computer, and dedicated hardware appliances that supply specific network services such as load balancers, ADCs, firewalls, IPS/IDS systems etc. The DC infrastructure can be owned by an Enterprise or by a service provider (referred as Cloud Service Provider or CSP), and shared by a number of tenants. Computing and storage infrastructure are virtualized in order to allow different tenants to share the same resources. Each tenant can dynamically add/remove resources from the global pool to/from its individual service.
Virtualized services as discussed herein generally describe any type of virtualized computing and/or storage resources capable of being provided to a tenant. Moreover, virtualized services also include access to non-virtual appliances or other devices using virtualized computing/storage resources, data center network infrastructure and so on. The various embodiments are adapted to improve event-related processing within the context of data centers, networks and the like.
Within the context of a typical data center arrangement, a tenant entity such as a bank or other entity has provisioned for it a number of virtual machines (VMs) which are accessed via a Wide Area Network (WAN) using Border Gateway Protocol (BGP). At the same time, thousands of other virtual machines may be provisioned for hundreds or thousands of other tenants. The scale associated with data centers may be enormous in that many thousands (or more) of virtual machines, virtual services and the like may be created and/or destroyed each day per tenant demand.
Each of the virtual ports, virtual machines, virtual switches, virtual switch controllers and other objects or entities within the data center (virtual and otherwise) generates event data in response to many different types of conditions. These various objects or entities are typically arranged in a hierarchical manner such the failure of an object or entity necessarily results in the failure of hierarchically lower objects or entities dependent upon or in communication with the failed object or entity. In this case, event data associated with the failed object or entity may be generated by a respective hierarchically higher object or entity. However, event data associated with the dependent hierarchically lower objects or entities may not be generated.
Further, in the case of the failed object or entity being restored, it is important to ensure that the dependent hierarchically lower objects or entities are also restored as expected. For example, the failure of the virtual port will necessarily result in the failure of a hierarchically lower a Border Gateway Protocol (BGP) entity. When the virtual port is restored, restoration of the BGP entity is expected. If the BGP entity is not restored then an alarm should be triggered. At present, there is no efficient mechanism by which the failure of the BGP entity to come up results in the triggering of the appropriate alarm.
Current solutions to this problem use a business rule management system (BRMS) such as Drools (or some other rules processing mechanism) wherein a working memory is associated with a rules engine, which is itself associated with a plurality of rule definitions. All events are stored in the working memory. Each time an event is received by the working memory the rule engine processes all of the defined rules against all of the events within the working memory. All events are stored within the working memory so that various rules can be processed against the stored elements to determine whether or not expected events have occurred, such as restoration of hierarchically lower objects or entities in conjunction with the restoration of a corresponding hierarchically higher object or entity.
Unfortunately, DROOLS and other known rules processing mechanisms are extremely resource hungry in terms of memory, processing resources and so on.